Skip to content

Rengeneer/TestStand

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Учебный стенд: IngressNightmare (CVE-2025-1974)

Локальный одноразовый кластер Kubernetes с намеренно уязвимым компонентом ingress-nginx для отработки атаки и защиты.


Что развёрнуто

Компонент Значение
Кластер kind, имя ingressnightmare-lab
Уязвимость CVE-2025-1974 (семейство IngressNightmare)
Компонент ingress-nginx, версия 1.11.0 (уязвима)
Namespace ingress-nginx
Фикс-версии 1.11.5 / 1.12.1 и выше (НЕ установлены)

Суть уязвимости: недостаточная валидация данных, попадающих в конфигурацию NGINX через admission-контроллер, позволяет неаутентифицированному запросу из pod-сети внедрить директивы и выполнить код в pod'е контроллера, что открывает доступ к секретам кластера.


Роли и зоны ответственности

  • Платформа (развёртывание стенда): поднимает и сбрасывает кластер, гарантирует чистое исходное состояние между раундами. Команда сброса — ./setup.sh.
  • Атакующие (red): запускают PoC только внутри стенда, не трогают конфигурацию кластера на уровне инфраструктуры.
  • Защитники (blue): применяют защиту поверх (см. ниже).

Установка с нуля (на чистой машине)

Важно: поменять флаги скриптов на исполняемые файлы

chmod +x setup.sh install-tools.sh

Стенд рассчитан на Fedora Linux. Порядок на новой машине:

./install-tools.sh   # поставит Docker, kind, kubectl, helm (один раз)
# выйти из системы и зайти снова (нужно для группы docker)
docker run hello-world   # проверка, что Docker работает без sudo
./setup.sh               # поднять стенд

На дистрибутиве, отличном от Fedora, шаги установки Docker внутри install-tools.sh будут другими — скрипт это проверяет и останавливается.


Как подключиться

После ./setup.sh доступ к кластеру уже настроен в kubectl (kind сам прописывает контекст). Проверка:

kubectl get nodes
kubectl get pods -n ingress-nginx

Pod контроллера должен быть в статусе Running.

Проверить версию (должна быть 1.11.0):

kubectl exec -n ingress-nginx \
  $(kubectl get pod -n ingress-nginx -l app.kubernetes.io/component=controller -o name) \
  -- /nginx-ingress-controller --version

Цикл одного раунда

  1. Платформа: ./setup.sh → объявляет «стенд чист, версия 1.11.0».
  2. Red: запускает PoC из pod-сети → фиксирует результат (сработало/нет).
  3. Blue: применяет защиту → фиксирует, что изменилось.
  4. Red: повторяет тот же PoC → проверка «отбилось / задетектилось».
  5. Платформа: ./setup.sh → следующий раунд с чистого состояния.

Сброс стенда

./setup.sh             # снести старый кластер и поднять заново (чистое состояние)
./setup.sh --no-reset  # поднять, не удаляя существующий (если кластера ещё нет)

Полностью убрать стенд с машины:

kind delete cluster --name ingressnightmare-lab

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages